package logic.service;

import dao.TeacherDAO;
import entity.Teacher;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import vo.IValueObject;
import vo.TeacherVO;

/**
 *
 * @author Alexander
 */
public class TeacherService implements IService {

    @Override
    public void persist(IValueObject vo, EntityManager em) {
        Teacher entity = new Teacher();
        //entity.setId(((ProfesorVO)vo).getId());
        entity.setName(((TeacherVO) vo).getName());
        entity.setLastName(((TeacherVO) vo).getLastName());
        entity.setReputation(((TeacherVO) vo).getReputation());
        entity.setEmail(((TeacherVO) vo).getEmail());
        entity.setClassDays(((TeacherVO) vo).getClassDays());

        new TeacherDAO().persist(entity, em);
    }

    @Override
    public IValueObject find(Object id, EntityManager em) {
        Teacher p = (Teacher) new TeacherDAO().find(id, em);
        if (p != null) {
            return p.toVO();
        } else {
            return null;
        }
    }

    @Override
    public void update(IValueObject vo, EntityManager em) {
        Teacher entity = new Teacher();
        entity.setId(((TeacherVO) vo).getId());
        entity.setName(((TeacherVO) vo).getName());
        entity.setLastName(((TeacherVO) vo).getLastName());
        entity.setReputation(((TeacherVO) vo).getReputation());
        entity.setEmail(((TeacherVO) vo).getEmail());
        entity.setClassDays(((TeacherVO) vo).getClassDays());

        new TeacherDAO().update(entity, em);
    }

    @Override
    public void delete(Object id, EntityManager em) {
        new TeacherDAO().delete(id, em);
    }

    @Override
    public List<IValueObject> getList(EntityManager em) {
        List<IValueObject> profVO = new ArrayList<>();
        for (Object profesores : new TeacherDAO().getList(em)) {
            profVO.add(((Teacher) profesores).toVO());
        }
        return profVO;
    }

    public TeacherVO findByName(String nombre, String apellido, EntityManager em) {
        TeacherVO teacherVo = new TeacherDAO().findByName(nombre, apellido, em).toVO();
        if (teacherVo != null) {
            return teacherVo;
        } else {
            return null;
        }
    }
}
